export default function VueBus(Vue) {
    const bus = new Vue();
    Object.defineProperties(bus, {
        on: {
            get() {
                return this.$on.bind(this);
            },
        },
        once: {
            get() {
                return this.$once.bind(this);
            },
        },
        off: {
            get() {
                return this.$off.bind(this);
            },
        },
        emit: {
            get() {
                return this.$emit.bind(this);
            },
        },
    });
    Object.defineProperty(Vue, 'bus', {
        get() {
            return bus;
        },
    });
    Object.defineProperty(Vue.prototype, '$bus', {
        get() {
            return bus;
        },
    });
}
